package Package.MethodReference.AnInstanceMethodThatReferencesAClass;

public class AnInstanceMethodThatReferencesAClass {
    private static String S;
    private static int X;
    private static int Y;

    public static final void AnInstanceMethodThatReferencesAClass() {
        S = "erqogfqupernjbtwrhgiiiiwt4gniohwbt";
        X = 12;
        Y = 30;
        useMyString(String::substring);
    }

    private static void useMyString(MyString my) {
        String a=my.mySubString(S, X, Y);
        System.out.println(a);
    }
}
//引用类的实例方法，其实就是引用类中的成员方法
//格式
//类名::成员方法
//范例
//String::substring
//public String substring(int beginIndex,int endIndex)
//从beginIndex开始到endIndex结束，截取字符串。返回一个子串，子串的长度为endIndex-beginIndex
//练习描述
//定义一个接口(MyString)，里面定义一个抽象方法：
//String mySubString(String s,int x,int y);
//定义一个测试类(MyStringDemo)，在测试类中提供两个方法
//一个方法是：useMyString(MyString my)
//一个方法是主方法，在主方法中调用useMyString方法
//使用说明
//        Lambda表达式被类的实例方法替代的时候 第一个参数作为调用者 后面的参数全部传递给该方法作为参数
